#pragma once
#include "headers.h"
#include "OgreInit.h"
#include "RenderWindowManager.h"
#include "ParticleManagerForm.h"
#include "ConsoleForm.h"
#include "PropertyBoxForm.h"

namespace particleEditorCli {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;
	using namespace WeifenLuo::WinFormsUI::Docking;

	public ref class Mainform : public System::Windows::Forms::Form
	{
	public:
		Mainform(void);

		static property Mainform^						Instance
		{
			Mainform^ Instance::get();
		}

		property DockPanel^	Dockpanel
		{
			DockPanel^ Dockpanel::get();
		}
		
		
	protected:
		~Mainform();


	private:
		static Mainform^								mInstance;
		OgreInit*										mOgreinit;
		RenderWindowManager^							mRWMan;
		ParticleManagerForm^							mParticleMgr;
		ConsoleForm^									mConsoleForm;
		PropertyBoxForm^								mPropertyBoxForm;

		System::Windows::Forms::StatusStrip^			mStatusStrip;
		System::Windows::Forms::ToolStrip^				mToolStrip;
		System::Windows::Forms::ToolStripButton^		newToolStripButton;
		System::Windows::Forms::ToolStripButton^		openToolStripButton;
		System::Windows::Forms::ToolStripButton^		saveToolStripButton;
		System::Windows::Forms::MenuStrip^				mMenuStrip;
	private: System::Windows::Forms::ToolStripMenuItem^  mToolStripMenuItemFile;

		WeifenLuo::WinFormsUI::Docking::DockPanel^		mDockPanel;
	private: System::Windows::Forms::ToolStripMenuItem^  mToolStripMenuItemEdit;

	private: System::Windows::Forms::ToolStripMenuItem^  viewToolStripMenuItem;
	private: System::Windows::Forms::ToolStripMenuItem^  mToolStripMenuItemLayout;
	private: System::Windows::Forms::ToolStripMenuItem^  mToolStripMenuItemLoad;
	private: System::Windows::Forms::ToolStripMenuItem^  mToolStripMenuItemSave;



	private: System::Windows::Forms::ToolStripSeparator^  toolStripSeparator1;
	private: System::Windows::Forms::ToolStripMenuItem^  mToolStripMenuItemWindows;
	private: System::Windows::Forms::ToolStripMenuItem^  mToolStripMenuItemConsole;
	private: System::Windows::Forms::ToolStripMenuItem^  mToolStripMenuItemPropertyBox;



	private: System::Windows::Forms::ToolStripMenuItem^  mToolStripMenuItemRenderBox;
	private: System::Windows::Forms::ToolStripMenuItem^  mToolStripMenuItemParticleManager;



			 System::ComponentModel::Container ^				components;

		void InitializeComponent(void);
		IDockContent^ loadLayoutCallback(System::String^ str);
		void OnShownCallback(Object^ sender, EventArgs^e);

		System::Void mToolStripMenuItemLoad_Click(System::Object^  sender, System::EventArgs^  e);
		System::Void mToolStripMenuItemSave_Click(System::Object^  sender, System::EventArgs^  e);
		System::Void mToolStripMenuItemConsole_Click(System::Object^  sender, System::EventArgs^  e);
		System::Void mToolStripMenuItemPropertyBox_Click(System::Object^  sender, System::EventArgs^  e);
		System::Void mToolStripMenuItemParticleManager_Click(System::Object^  sender, System::EventArgs^  e);
		System::Void mToolStripMenuItemRenderBox_Click(System::Object^  sender, System::EventArgs^  e);
	};
}

